// #include <stdio.h>

// #define LOG(format, ...) printf("[%s:%d]\n" format, __FILE__, __LINE__, ##__VA_ARGS__);

// int main()
// {
//     LOG("日志消息");
//     return 0;
// }







// #include <memory>
// #include <functional>

// using std::endl;
// using std::cout;

// void xprintf()//无参特化
// {
//     cout << endl;
// }
// template<typename T, typename ...Args>
// void xprintf(const T& v, Args &&...args)
// {
//     cout << v << " ";
//     if(sizeof ...(args) > 0)
//     {
//         xprintf(std::forward<Args>(args)...);//完美转发，递归分解参数
//     }
//     else
//     {
//         xprintf();
//     }

// }
// int main()
// {
//     xprintf("aaa","vvv","撒旦发射点",10000);
//     return 0;
// }






// void myPrint(const char* fmt ,...)
// {
//     char* res;
//     va_list ap;
//     va_start(ap,fmt);//初始化ap指针，使其指向count后面的第一个参数
//     int len = vasprintf(&res,fmt,ap);
//     cout << res << endl;
//     va_end(ap);//将ap置空
//     free(res);
// }
// int main()
// {
//     myPrint("%s-%d","天青色等烟雨",199);
//     return 0;
// }







// void PrintNum(int count,...)
// {
//     va_list ap;
//     va_start(ap,count);//初始化ap指针，使其指向count后面的第一个参数
//     for(int i = 0; i < count; i++)
//     {
//         int num = va_arg(ap,int);//从不定参数列表中抽取int类型的参数
//         printf("%d ",num);
//     }
//     cout << endl;
//     va_end(ap);//将ap置空
// }
// int main()
// {
//     PrintNum(5,1,5,2,3,6);
//     return 0;
// }